home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / 86xx / 8605.d64 / pg-quell 1 (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  7KB  |  280 lines

  1. 990 OPEN1,4
  2. 995 SYS 9*4096
  3. 1000 .OPT OO,P1
  4. 1005 ;
  5. 1010 ;GRAFIKROUTINEN 'PROFI-GRAFIK 64'
  6. 1015 ;
  7. 1020 *= $8390           ;STARTADRESSE
  8. 1025 ;
  9. 1030 GETCOM   = $AEFD ;PRUEFT AUF KOMMA
  10. 1035 GETBYTE  = $B79E ;HOLT BYTE INS X-REGISTER
  11. 1040 GETADR   = $B7EB ;ADRESSWERT NACH $14/$15 + GETBYTE
  12. 1045 CHRGET   = $0073 ;HOLT NAECHSTES ZEICHEN
  13. 1050 CHR(null)T   = $0079 ;HOLT LETZTES ZEICHEN
  14. 1055 ILLEGAL  = $B248 ;FEHLERMELDUNG 'ILLEGAL QUANTITY'
  15. 1060 ;
  16. 1065 SCRNUM   = $9FF1 ;AKTUELLE BILDSCHIRMNUMMER
  17. 1070 ;
  18. 1075 SCREEN JSR GETBYTE
  19. 1080 CPX #2
  20. 1085 BCC SCROK
  21. 1090 JMP ILLEGAL
  22. 1095 SCROK LDA SCRTAB,X
  23. 1100 STA SCRNUM       ;MERKEN
  24. 1105 RTS
  25. 1110 ;
  26. 1115 SCRTAB .BYT $A0,$E0
  27. 1120 ;
  28. 1125 HIRES LDA $DD00        ;16K-BEREICH,DEN DER VIC ADRESSIERT
  29. 1130 AND #%11111100   ;FESTLEGEN $C000-$FFFF
  30. 1135 BIT SCRNUM
  31. 1140 BVS *+4          ;BEI $E0 IST DAS V-FLAG GESETZT !
  32. 1145 ORA #%00000001   ;BEREICH VON $8000-$BFFF
  33. 1150 STA $DD00
  34. 1155 LDA $D018        ;POSITION DES VIDEORAMS
  35. 1160 ORA #%00101000   ;FESTLEGEN $0C00-$0FFF
  36. 1165 STA $D018
  37. 1170 JSR TEX1
  38. 1175 LDA $D011        ;EINZELPUNKTMODUS EINSCHALTEN
  39. 1180 ORA #%00100000   ;BIT5=1
  40. 1185 STA $D011
  41. 1190 RTS
  42. 1195 ;
  43. 1200 MULTI JSR HIRES        ;HIRES-MODUS EIN
  44. 1205 LDA $D016        ;MULTICOLORMODUS EINSCHALTEN
  45. 1210 ORA #%00010000   ;BIT4=1
  46. 1215 STA $D016
  47. 1220 RTS
  48. 1225 ;
  49. 1230 TEXT LDA $DD00        ;VIC ADRESSIERT JETZT WIEDER
  50. 1235 ORA #%00000011   ;BEREICH VON $0000-$3FFF
  51. 1240 STA $DD00
  52. 1245 LDA $D018        ;VIDEORAM AB $0400-$07FF
  53. 1250 AND #%11010111
  54. 1255 STA $D018
  55. 1260 LDA $D011        ;EINZELPUNKTMODUS ABSCHALTEN
  56. 1265 AND #%11011111
  57. 1270 STA $D011
  58. 1275 TEX1 LDA $D016        ;MULTICOLORMODUS ABSCHALTEN
  59. 1280 AND #%11101111
  60. 1285 STA $D016
  61. 1290 RTS
  62. 1295 ;
  63. 1300 HELP = $20          ;HILFSZEIGER
  64. 1305 ;
  65. 1310 CLEAR LDA SCRNUM
  66. 1315 STA HELP+1
  67. 1320 LDA #0
  68. 1325 STA HELP         ;ZEIGER AUF ANFANG DER BITMAP
  69. 1330 TAY
  70. 1335 LDX #32          ;32 BLOECKE = 8 KBYTE
  71. 1340 CLOOP STA (HELP),Y     ;BYTE LOESCHEN
  72. 1345 INY
  73. 1350 BNE CLOOP
  74. 1355 INC HELP+1       ;NAECHSTER BLOCK
  75. 1360 DEX
  76. 1365 BNE CLOOP
  77. 1370 RTS
  78. 1375 ;
  79. 1380 HICOL JSR GETBYTE      ;ZEICHENFARBE HOLEN
  80. 1385 STX HELP         ;MERKEN
  81. 1390 JSR GETCOM
  82. 1395 JSR GETBYTE      ;HINTERGRUNDFARBE
  83. 1400 STX HELP+1       ;MERKEN
  84. 1405 LDA HELP         ;ZEICHENFARBE
  85. 1410 ASL A
  86. 1415 ASL A            ;MAL 16
  87. 1420 ASL A
  88. 1425 ASL A
  89. 1430 CLC
  90. 1435 ADC HELP+1       ;+ HINTERGRUNDFARBE
  91. 1440 JSR HIC1         ;MIT DIESEM WERT VIDEORAM FUELLEN
  92. 1445 JSR CHR(null)T
  93. 1450 CMP #","         ;WENN NOCH EIN KOMMA FOLGT,
  94. 1455 BNE MODE-1
  95. 1460 JSR CHRGET
  96. 1465 JSR GETBYTE      ;DANN 3.ZEICHENFARBE HOLEN
  97. 1470 TXA
  98. 1475 LDX #$D8         ;UND DAS FARBRAM ($D800-$DFFF)
  99. 1480 BNE HIC2         ;DAMIT FUELLEN
  100. 1485 ;
  101. 1490 HIC1 BIT SCRNUM
  102. 1495 BVS SCR1A
  103. 1500 LDX #$8C         ;SCREEN0 VIDEORAM VON $8C00-$8FFF
  104. 1505 .BYT $2C          ;BIT-OPCODE
  105. 1510 SCR1A LDX #$CC         ;SCREEN1 VIDEORAM VON $CC00-$CFFF
  106. 1515 HIC2 STX HELP+1
  107. 1520 LDY #0
  108. 1525 STY HELP         ;ZEIGER AUF ANFANG VIDEORAM
  109. 1530 LDX #4           ;4 BLOECKE SIND ZU FUELLEN
  110. 1535 HLOOP STA (HELP),Y
  111. 1540 INY
  112. 1545 BNE HLOOP
  113. 1550 INC HELP+1       ;NAECHSTER BLOCK
  114. 1555 DEX
  115. 1560 BNE HLOOP
  116. 1565 RTS
  117. 1570 ;
  118. 1575 PLOTMODE = $9FF2        ;AKTUELLER PLOTMODUS
  119. 1580 ;
  120. 1585 MODE JSR GETBYTE
  121. 1590 CPX #3
  122. 1595 BCC MODEOK
  123. 1600 ILLMODE JMP ILLEGAL
  124. 1605 MODEOK LDA MODETAB,X
  125. 1610 STA PLOTMODE     ;MODUS MERKEN
  126. 1615 RTS
  127. 1620 ;
  128. 1625 MODETAB .BYT 0,64,128
  129. 1630 ;
  130. 1635 MULTICOL = $9FF3        ;ZEICHENFARBE FUER MULTI
  131. 1640 ;
  132. 1645 INK JSR GETBYTE      ;ZEICHENFARBE SETZEN
  133. 1650 CPX #4
  134. 1655 BCS ILLMODE      ;>=4, DANN FEHLER
  135. 1660 STX MULTICOL     ;MERKEN
  136. 1665 RTS
  137. 1670 ;
  138. 1675 XLO = $14
  139. 1680 XHI = $15
  140. 1685 ;
  141. 1690 ;BYTENUMMER ERRECHNEN (HIRES-MODUS)
  142. 1695 HIPLOT LSR       ;Y-KOORD. SCHON IM AKKU !
  143. 1700 LSR              ;(Y/8)
  144. 1705 LSR
  145. 1710 TAY              ;INS Y-REGISTER
  146. 1715 CLC              ;ALLE LOBYTES ADDIEREN
  147. 1720 TXA
  148. 1725 AND #%00000111   ;(Y AND #7)
  149. 1730 ADC MALTAB,Y     ;+ (320*Y/8)LO (C=0!)
  150. 1735 STA $F7
  151. 1740 LDA XLO
  152. 1745 AND #%11111000   ;+ (XLO AND #248)
  153. 1750 ADC $F7
  154. 1755 STA $F7          ;NACH $F7
  155. 1760 ;ADDITION DER HIBYTES
  156. 1765 LDA MALTAB1,Y    ;(320*Y/8)HI
  157. 1770 ADC SCRNUM       ;+ ANFANG BITMAP
  158. 1775 ADC XHI          ;+ XHI
  159. 1780 STA $F8          ;NACH $F8
  160. 1785 LDA XLO          ;BITPOSITION ERRECHNEN
  161. 1790 AND #%00000111   ;(XLO AND #7)
  162. 1795 TAY
  163. 1800 LDA HOCHTAB,Y    ;2^(7-YREGISTER)
  164. 1805 RTS
  165. 1810 ;
  166. 1815 MUPLOT LSR             ;(Y/8)
  167. 1820 LSR
  168. 1825 LSR
  169. 1830 TAY
  170. 1835 LDA XLO
  171. 1840 AND #%11111100   ;(XLO AND #252)
  172. 1845 ASL                    ;MAL 2 (BIT7 INS CARRY !)
  173. 1850 STA $F7          ;NACH $F7
  174. 1855 LDA MALTAB1,Y    ;(320*Y/8)HI
  175. 1860 ADC SCRNUM       ;+ANFANG BITMAP
  176. 1865 STA $F8          ;NACH $F8
  177. 1870 TXA
  178. 1875 AND #%00000111   ;(Y AND #7)
  179. 1880 ADC MALTAB,Y     ;+(320*Y/8)LO
  180. 1885 TAY              ;INS Y-REGISTER
  181. 1890 LDA XLO          ;BITPOSITION ERRECHNEN
  182. 1895 AND #%00000011   ;(XLO AND #3)
  183. 1900 TAX
  184. 1905 LDA MULTAB,X     ;BITWERT LADEN
  185. 1910 SEC
  186. 1915 RTS
  187. 1920 ;
  188. 1925 PLOT JSR GETADR       ;KOORDINATEN HOLEN
  189. 1930 LDA $D016
  190. 1935 AND #%00010000
  191. 1940 BNE MPLOT        ;MULTICOLORMODUS
  192. 1945 CPX #200
  193. 1950 BCS PLOT-1       ;YKOORD.>199 (C=1)
  194. 1955 LDY XHI
  195. 1960 BEQ OK
  196. 1965 DEY
  197. 1970 BNE PLOT-2       ;XHI>1 (C=1)
  198. 1975 LDA XLO          ;XHI=1, DANN XLO TESTEN
  199. 1980 CMP #<320
  200. 1985 BCS PLOT-1       ;XLO>$40 (C=1)
  201. 1990 OK SEI
  202. 1995 LDA #$34         ;SPEICHER AUF RAM UMSCHALTEN
  203. 2000 STA 1            ;UM BIT-MAP LESEN ZU KOENNEN
  204. 2005 TXA
  205. 2010 PHA              ;Y-KOORD. MERKEN
  206. 2015 JSR HIPLOT       ;BYTENUMMER BERECHNEN
  207. 2020 LDY #0
  208. 2025 BIT PLOTMODE
  209. 2030 BVS LOESCH
  210. 2035 BMI INVERT
  211. 2040 ORA ($F7),Y      ;PUNKT SETZEN
  212. 2045 BNE STORE        ;UNBEDINGTER SPRUNG
  213. 2050 ;
  214. 2055 MPLOT CPX #200
  215. 2060 BCS PLOT-1
  216. 2065 LDA XHI          ;XHI<>0 (C=1)
  217. 2070 BNE PLOT-2
  218. 2075 LDA XLO
  219. 2080 CMP #160
  220. 2085 BCS PLOT-2       ;XLO>159 (C=1)
  221. 2090 SEI
  222. 2095 LDA #$34         ;SPEICHER AUF RAM UMSCHALTEN
  223. 2100 STA 1
  224. 2105 TXA
  225. 2110 PHA              ;YKOORD. MERKEN
  226. 2115 JSR MUPLOT       ;BYTENUMMER ERRECHNEN
  227. 2120 BIT PLOTMODE
  228. 2125 BVS LOESCH
  229. 2130 BMI INVERT
  230. 2135 PHA              ;PUNKT SETZEN
  231. 2140 EOR #255         ;VORHER LOESCHEN
  232. 2145 AND ($F7),Y
  233. 2150 STA ($F7),Y
  234. 2155 LDX MULTICOL     ;ZEICHENFARBE LADEN
  235. 2160 PLA
  236. 2165 AND MULTAB1,X    ;BITMUSTER DER FARBE SETZEN
  237. 2170 ORA ($F7),Y
  238. 2175 BNE STORE
  239. 2180 LOESCH EOR #255         ;PUNKT LOESCHEN
  240. 2185 AND ($F7),Y
  241. 2190 .BYT $2C
  242. 2195 INVERT EOR ($F7),Y      ;PUNKT INVERTIEREN
  243. 2200 STORE STA ($F7),Y      ;BITMUSTER SETZEN
  244. 2205 PLA              ;YKOORD. WIEDERHERSTELLEN
  245. 2210 TAX
  246. 2215 PLOTEND LDA #$37         ;NORMALE SPEICHERKONFIGURATION
  247. 2220 STA 1
  248. 2225 CLI
  249. 2230 CLC                    ;C=0 WENN PUNKT GESETZT
  250. 2235 RTS
  251. 2240 ;
  252. 2245 MALTAB .BYT 0,<320,<640,<960 ;MULTIPLIKATIONSTABELLE
  253. 2250 .BYT $00,$40,$80,$C0  ;MAL 320
  254. 2255 .BYT $00,$40,$80,$C0  ;LOBYTES
  255. 2260 .BYT $00,$40,$80,$C0
  256. 2265 .BYT $00,$40,$80,$C0
  257. 2270 .BYT $00,$40,$80,$C0
  258. 2275 .BYT $00
  259. 2280 ;
  260. 2285 MALTAB1 .BYT 0,>320,>640,>960
  261. 2290 .BYT $05,$06,$07,$08  ;MAL 320
  262. 2295 .BYT $0A,$0B,$0C,$0D  ;HIBYTES
  263. 2300 .BYT $0F,$10,$11,$12
  264. 2305 .BYT $14,$15,$16,$17
  265. 2310 .BYT $19,$1A,$1B,$1C
  266. 2315 .BYT $1E
  267. 2320 ;
  268. 2325 HOCHTAB .BYT $80,$40,$20,$10 ;ZWEIERPOTENZEN
  269. 2330 .BYT $08,$04,$02,$01
  270. 2335 ;
  271. 2340 MULTAB .BYT %11000000    ;XPOSITION0
  272. 2345 .BYT %00110000    ;XPOSITION1
  273. 2350 .BYT %00001100    ;XPOSITION2
  274. 2355 .BYT %00000011    ;XPOSITION3
  275. 2360 ;
  276. 2365 MULTAB1 .BYT %00000000    ;FARBE0=HINTERGRUND
  277. 2370 .BYT %01010101    ;FARBE1
  278. 2375 .BYT %10101010    ;FARBE2
  279. 2380 .BYT %11111111    ;FARBE3
  280.